/**
 * Yolema.com Inc.
 * Copyright (c) 2011-2012 All Rights Reserved.
 */
package org.grayrabbit.pay.core.biz.manager.system;

import java.util.List;
import java.util.Map;

import org.grayrabbit.pay.core.model.results.PayResult;
import org.grayrabbit.pay.core.model.results.GenericsResult;
import org.grayrabbit.pay.core.model.pages.PageList;
import org.grayrabbit.pay.core.model.entity.system.AppSystem;

/**
 * 
 * 
 * @author liyd
 * @version $Id: AppSystemManager.java, v 0.1 Fri Jun 01 11:14:01 CST 2012 liyd Exp $
 */
public interface AppSystemManager {

    /**
     * 查询业务列表
     * 
     * @param appSystem
     * @return
     */
    public GenericsResult<PageList<AppSystem>> queryPageList(AppSystem appSystem);

    /**
     * 根据Id得到实体对象
     * 
     * @param id
     * @return
     */
    public GenericsResult<AppSystem> getById(Long id);

    public PayResult getIfRepeatByCode(AppSystem appSystem);

    /**
     * 根据id批量删除
     * 
     * @param idArray
     * @return
     */
    public PayResult deleteBatchById(Long[] idArray);

    /**
     * 查询所有对象
     * 
     * @return
     */
    public GenericsResult<List<AppSystem>> findAll();

    /**
     * 查询所有对象
     * @return
     */
    public GenericsResult<Map<String, AppSystem>> findAllMap();

    /**
     * 添加一个对象
     * 
     * @param appSystem
     * @return
     */
    public GenericsResult<AppSystem> insert(AppSystem appSystem);

    /**
     * 插入系统与终端的对应关系记录
     * @param terminalIds
     * @param systemId
     * @return
     */
    public GenericsResult<Integer> insertAss(Long[] terminalIds, Long systemId);

    /**
     * 更新一个对象
     * 
     * @param appSystem
     * @return
     */
    public GenericsResult<Integer> update(AppSystem appSystem);

    /**
     * 更新一个对象
     * 
     * @param appSystem
     * @return
     */
    public GenericsResult<Integer> saveStatus(AppSystem appSystem);

    /**
     * 删除一个对象
     * 
     * @param appSystem
     * @return
     */
    public PayResult delete(AppSystem appSystem);

    /**
     * 根据系统id得到所有终端
     * @param id
     * @return
     */
    public GenericsResult<Long[]> findTerminalIds(Long id);

    /**
     * 根据系统id删除系统以及相应其他表的记录
     * @param systemId
     * @return
     */
    public PayResult deleteBySystemId(Long systemId);

}
